/** * 上传打包后的文件到服务器上的webpack插件*/
// const { spawn } = require('child_process')
const uploadDir = require('./serverLib').UploadDir
class UploadFileWebPackPlugin {
  constructor(options) {
    this.options = options
  }
  apply(compiler) {
    // 定义在打包后执行这个webpack插件
    // 需要用到对应的钩子函数
    compiler.hooks.done.tap('upload-file-plugin', async(status) => {
      // console.log('this.options: ', this.options);
      this.deploy()
    })
  }
  deploy() {
    // 如果是linux系统
    // const chmod = spawn('chmod', ['-R', '777', this.options.buildFolder])
    // chmod.on('exit', (code, signal) => {
    //   console.log('\n服务器授权成功，开始自动化部署~~\n')
    //   uploadDir(this.options.serverConfig, this.options.buildFolder, this.options.servePath, (err) => {
    //     if (err) throw err
    //     console.log('\n自动化部署成功~\n')
    //   })
    // })
    // windows系统
    console.log('\n服务器授权成功，开始自动化部署~~\n')
    uploadDir(this.options.serverConfig, this.options.buildFolder, this.options.servePath, (err) => {
      if (err) throw err
      console.log('\n自动化部署成功~\n')
    })
  }
}
module.exports = UploadFileWebPackPlugin
